package bancosys.tec.rtm.monitor;

import bancosys.tec.rtm.exception.ExceptionMonitor;

/**
 * @author Marcio Ribeiro (mmr)
 */
public interface Monitor {

    /** Inicia thread do monitor - que chama refresh() de tempos em tempos. */
    void startMonitor();

    /**
     * @return <code>true</code> se monitor estiver iniciado e em execucao, <code>false</code> se nao.
     */
    boolean isRunning();

    /** Para thread do monitor. */
    void stopMonitor();

    /** Atualiza estado do monitor. */
    void refresh();

    /**
     * Define o monitor de excecoes para guardar excecoes que ocorrerem no monitor de checagens.
     * 
     * @param exceptionMonitor monitor de excecoes.
     * @see ExceptionMonitor
     */
    void setExceptionMonitor(ExceptionMonitor exceptionMonitor);

    /**
     * Intervalo em milisegundos que o monitor deve ter seu estado atualizado. Se intervalo for menor ou igual a 0, o monitor soh podera ser
     * atualizado manualmente (chamando refresh()).
     * 
     * @return int
     */
    long getRefreshInterval();
}